GAL/TX ;	GAL/TXT		GAL/TOO		GAL/CMD
 	ORG	7000H
 RACKS	DEFB	0
 MUSIC	DEFB	0
 BULPOS	DEFW	0
 INACTV	DEFW	0
 COUNT	DEFW	0
 LSTKEY	DEFB	0
 PIPPLC	DEFB	0
 SCORE1	DEFW	0
 SCORE2	DEFW	0
 HIGH1	DEFW	0
 HIGH2	DEFW	0
 HIGH3	DEFW	0
 BONUS	DEFW	0
 RANK1	DEFB	0
 RANK2	DEFB	0
 ETIME	DEFW	0
 SHTPOS	DEFW	0
 BULLET	DEFB	0
 TARLFT	DEFB	0
 PIPES	DEFB	0
 PIPVAL	DEFW	0
 GUNPOS	DEFW	0
 POINT	DEFB	0
 SPEED	DEFB	0
 MASK1	DEFB	0
 INAIR	DEFB	0	;IF SHOT IS IN AIR
 BONPTR	DEFW	MBONUS
 MBONUS	DEFM	'BONUS'
 	DEFB	0
 KEY	LD	BC,(COUNT)
 	INC	BC
 	LD	(COUNT),BC
 	LD	A,B
 	OR	C
 	JR	NZ,KEYCON
 	LD	BC,(ETIME)
 	INC	BC
 	LD	(ETIME),BC
 KEYCON	LD	A,(3840H)
 	LD	(LSTKEY),A
 	OR	A
 	JR	NZ,KEYGOT
 	LD	BC,(INACTV)
 	INC	BC
 	LD	(INACTV),BC
 	RET
 KEYGOT	LD	BC,0
 	LD	(INACTV),BC
 	RET
 CLS	XOR	A
 	OUT	(0FFH),A
 	LD	HL,3C00H
 	LD	DE,3C01H
 	LD	BC,1023
 	LD	(HL),20H
 	LDIR
 	RET
 SETUP	LD	HL,RACKS
 	LD	DE,RACKS+1
 	LD	BC,27
 	LD	(HL),0
 	LDIR
 	LD	HL,75
 	LD	(BULPOS),HL
 NEWGAM	CALL	CLS
 	CALL	DRAW
 	LD	A,75
 	LD	(BULLET),A
 	LD	A,23
 	LD	(TARLFT),A
 	LD	A,0FFH
 	LD	(PIPES),A
 	LD	HL,500
 	LD	(PIPVAL),HL
 	LD	BC,448
 	LD	(GUNPOS),BC
 	LD	A,1
 	LD	(POINT),A
 WAIT	LD	A,(3810H)
 	OR	A
 	JR	Z,WAIT2
 	LD	B,0
 DECOD	RRCA
 	JR	C,SPDFND
 	INC	B
 	JR	DECOD
 SPDFND	LD	A,B
 	LD	(SPEED),A
 	RET
 WAIT2	LD	A,(3820H)
 	OR	A
 	JR	Z,WAIT
 	CP	4
 	JR	NC,WAIT
 	LD	B,8
 	JR	DECOD
 MSG1	DEFM	'Score #1: 00000     Rank: 00  <<SHOOTING'
 	DEFB	0
 MSG2	DEFM	'Score #2: 00000     Rank: 00          GALLERY>>'
 	DEFB	0
 MSG3	DEFM	'PIPES'
 	DEFB	0
 MSG4	DEFM	'000  '
 	DEFB	0
 MSG5	DEFM	'GAME '
 	DEFB	0
 MSG6	DEFM	'OVER '
 	DEFB	0
 MSG7	DEFB	138
 	DEFB	133
 	DEFM	'%%'
 	DEFB	138
 	DEFB	133
 	DEFM	'10'
 	DEFB	138
 	DEFB	133
 	DEFM	'30'
 	DEFB	138
 	DEFB	133
 	DEFM	'50'
 	DEFB	138
 	DEFB	133
 	DEFB	0
 DRAW	LD	DE,MSG1
 	LD	HL,3C00H+2
 	CALL	PRINT
 	LD	DE,MSG2
 	LD	HL,3C00H+66
 	CALL	PRINT
 	LD	DE,MSG3
 	LD	HL,3C00H+448+52
 	CALL	PRINT
 	LD	DE,MSG4
 	LD	HL,3C00H+512+53
 	CALL	PRINT
 	LD	HL,3C00H+863
 	LD	DE,MSG7
 	CALL	PRINT
 	LD	HL,3C00H+191
 	LD	DE,40H
 	LD	B,3
 	LD	A,191
 	CALL	FILL
 	LD	(HL),143
 	LD	HL,3C00H+703
 	LD	B,4
 	CALL	FILL
 	LD	HL,3C00H+320+49
 	LD	(HL),176
 	ADD	HL,DE
 	LD	B,4
 	CALL	FILL
 	LD	HL,3C00H+896
 	LD	DE,1
 	LD	B,128
 	LD	A,131
 	CALL	FILL
 	LD	HL,3C00H+448
 	LD	(HL),191
 	INC	HL
 	LD	(HL),140
 	RET
 FILL	LD	(HL),A
 	ADD	HL,DE
 	DJNZ	FILL
 	RET
 PRINT	LD	A,(DE)
 	INC	DE
 	OR	A
 	RET	Z
 	LD	(HL),A
 	CP	(HL)
 	JR	Z,PRTOK
 	SUB	20H
 	LD	(HL),A
 PRTOK	INC	HL
 	JR	PRINT
 GAME	DI
 	LD	SP,6F00H
 	CALL	SETUP
 HOLD	CALL	KEY
 	CALL	GUNMOV
 	CALL	GUNFIR
 	LD	BC,1000H
 	CALL	DELAY
 	JR	HOLD
 GUNMOV	LD	A,(LSTKEY)
 	PUSH	AF
 	AND	72
 	CALL	NZ,GUNUP
 	POP	AF
 	AND	18
 	RET	Z
 GUNDWN	LD	BC,(GUNPOS)
 	LD	HL,832
 	OR	A
 	SBC	HL,BC
 	RET	Z
 	LD	HL,3C00H
 	ADD	HL,BC
 	PUSH	HL
 	POP	IX
 	LD	A,(POINT)
 	CP	1
 	JR	Z,COND2
 	CP	2
 	JR	Z,COND3
 	LD	HL,(GUNPOS)
 	LD	BC,40H
 	ADD	HL,BC
 	LD	(GUNPOS),HL
 	LD	(IX),20H
 	ADD	IX,BC
 	JR	COND1
 COND3	LD	(IX),176
 	LD	(IX+1),20H
 	LD	(IX+64),143
 	LD	(IX+65),131
 	LD	A,3
 	LD	(POINT),A
 	RET
 COND2	LD	(IX),188
 	LD	(IX+1),176
 	LD	(IX+64),131
 	LD	(IX+65),20H
 	LD	A,2
 	LD	(POINT),A
 	RET
 COND1	LD	(IX),191
 	LD	(IX+1),140
 	LD	A,1
 	LD	(POINT),A
 	RET
 DELAY	DEC	BC
 	LD	A,B
 	OR	C
 	JR	NZ,DELAY
 	RET
 GUNUP	LD	BC,(GUNPOS)
 	LD	HL,128
 	OR	A
 	SBC	HL,BC
 	JR	NZ,GUNUP1
 	LD	A,(POINT)
 	CP	1
 	RET	Z
 GUNUP1	LD	HL,3C00H
 	ADD	HL,BC
 	PUSH	HL
 	POP	IX
 	LD	A,(POINT)
 	CP	2
 	JR	Z,COND11
 	CP	3
 	JR	Z,COND2
 	LD	BC,-40H
 	ADD	IX,BC
 	LD	HL,(GUNPOS)
 	ADD	HL,BC
 	LD	(GUNPOS),HL
 	JR	COND3
 COND11	LD	(IX+64),20H
 	JR	COND1
 GUNFIR	LD	A,(BULLET)
 	OR	A
 	CALL	Z,GAMEOV
 	LD	A,(LSTKEY)
 	AND	80H
 	RET	Z
 	LD	A,(INAIR)
 	OR	A
 	RET	NZ
 	LD	BC,(COUNT)
 ;  TIME ROUTINE HERE
 	LD	HL,3C00H
 	LD	BC,(GUNPOS)
 	ADD	HL,BC
 	INC	HL
 	INC	HL
 	LD	A,(POINT)
 	LD	B,132
 	CP	1
 	JR	Z,SHOOT
 	LD	B,144
 	CP	2
 	JR	Z,SHOOT
 	LD	B,129
 	LD	BC,40H
 	ADD	HL,BC
 SHOOT	LD	(HL),B
 	LD	(SHTPOS),HL
 	LD	A,1
 	LD	(INAIR),A
 LESBUL	LD	HL,(BULPOS)
 	LD	(HL),131
 	DEC	HL
 	LD	(BULPOS),HL
 	LD	HL,BULLET
 	DEC	(HL)
 	RET
 GAMEOV	LD	A,(INAIR)
 	OR	A
 	RET	NZ
 ;	GAME TERMINATES HERE
 	JP	GAME
 	END	GAME
LD	(INAIR),A
 LESBUL	LD	HL,(BULPOS)
 	LD	(HL),131
 	DEC	HL
 	LD	(BULPOS),HL
 	LD	HL,BULLET
 	DEC	(HL)
 	RET
 GAMEOV	LD	A,(INAIR)
 	OR	A
 	RET	NZ
 ;	GAME TERMINATES HERE
 	JP	GAME
